1. Field of the Invention
The present invention relates to a connection-oriented communication system with a mechanism for re-establishing a communication path (connection) among programs in a distributed system environment.
2. Description of the Background Art
Conventionally, a connection-oriented communication path has been utilized for the sake of achieving the data exchange among the programs at a high reliability.
The communication using such a connection-oriented communication path is usually carried out in the following two steps.
(1) A communication path establishment by a connection of communication ports
(2) A data transfer
Here, the connection of communication ports is usually carried out asymmetrically by dividing a side for accepting the connection demand (server) and a side for requesting the connection (client). The server creates a communication port and wait for the connection request from the client. On the other hand, the client creates a communication port and makes a connection request to the communication port of the server. When the waiting of the connection request on the server side and the making of the connection request on the client side match with each other, the connection is established. After this connection is established, the data transfer can be carried out by using these connected communication ports. Once established, the connection is maintained until either one of the connected communication ports is closed.
In order to carry out such a connection-oriented communication by the programs, the procedures for the connection establishment are required to be programmed in the programs themselves on both of the server and client sides.
Now, in a program which requires such a connection-oriented communication path for its execution, there are cases in which a necessity arises for interrupting a currently executed processing once and re-starting the communication on another processor. As an example, there is a case in which a program on one processor A which is executing the processing by communicating with another program on another processor B cannot continue its processing on this processor A due to a need for the maintenance operation on this processor A or a malfunction of this processor A, so that the processing must be continued on still another processor C. In this case, there is a need for this program to release the communication path between the processors A and B once, and re-establish a connection with that another program on the processor B again on the processor C. Thus, the programming of the procedures for this re-establishment of a connection is necessary on both of the mutually communicating programs.
On the other hand, in the distributed system, there is a technique for load balancing of the distributed system called a process migration in which a program executed on a certain processor is relocated on another processor by reinstating its execution state.
Now, in order to carry out this process migration for the program using the connection-oriented communication path, there is a need to release the original communication path once and re-establish the communication path at the relocated processor as described above.
Here, in general, the process migration should be carried out without requiring the program to be aware of the occurrence of the migration, but in a case of using the connection-oriented communication path, the procedure for the re-establishment of a connection must be carried out on the program to be migrated as well as on the program communicating with that program to be migrated, so that it has conventionally been difficult to carry out the process migration for the program using a connection-oriented communication path without making the mutually communicating programs aware of the communication path re-establishment occurring in conjunction with the migration.